package org.holoeverywhere.slider;
import android.content.Context;
import android.content.res.TypedArray;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import org.holoeverywhere.LayoutInflater;
import org.holoeverywhere.widget.ListView;
final class SliderMenuAdapter extends BaseAdapter implements IAdapter<ListView>, AdapterView.OnItemClickListener {
private final int mDefaultTextAppearance;
private final int mDefaultTextAppearanceInverse;
private final LayoutInflater mLayoutInflater;
private final SliderMenu mMenu;
SliderMenuAdapter(Context context, SliderMenu menu) {
mMenu = menu;
mLayoutInflater = LayoutInflater.from(context);
TypedArray a = context.obtainStyledAttributes(R.styleable.SliderMenu);
mDefaultTextAppearance = a.getResourceId(
R.styleable.SliderMenu_textAppearanceSliderItem,
R.style.Holo_TextAppearance_Medium);
mDefaultTextAppearanceInverse = a.getResourceId(
R.styleable.SliderMenu_textAppearanceSliderItemInverse,
R.style.Holo_TextAppearance_Medium_Inverse);
a.recycle();
}
@Override
public int getCount() {
return mMenu.mItems.size();
}
@Override
public SliderItem getItem(int position) {
return mMenu.mItems.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
return getItem(position).mCustomLayout != 0 ? position
: Adapter.IGNORE_ITEM_VIEW_TYPE;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final SliderItem item = getItem(position);
if (convertView == null) {
convertView = mLayoutInflater.inflate(item.mCustomLayout != 0 ? item.mCustomLayout
: R.layout.slider_menu_item, parent, false);
}
return mMenu.bindView(item, convertView, position == mMenu.mCurrentPage, mDefaultTextAppearance, mDefaultTextAppearanceInverse);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mMenu.setCurrentPage(position, false, true);
}
@Override
public void bind(ListView listView) {
listView.setAdapter(this);
listView.setOnItemClickListener(this);
}
}